package collection;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class SortPoint {
    public static void main(String[] args) {
        List<Point> list=new ArrayList<>();
        list.add(new Point(1,2));
        list.add(new Point(5,6));
        list.add(new Point(4,5));
        list.add(new Point(23,45));
        list.add(new Point(12,34));
        list.add(new Point(34,23));
        System.out.println("原始list集合为："+list);

        //自定义排序规则
        Collections.sort(list, new Comparator<Point>() {
            @Override
            public int compare(Point o1, Point o2) {
                int len1=o1.getX()*o1.getX()+o1.getY()* o1.getY();
                int len2=o2.getX()*o2.getX()+o2.getY()*o2.getY();
                return len1-len2;//升序
//                return len2-len1;//降序
//                return o1.getX()- o2.getX();//按x坐标升序
//                return o2.getY()-o1.getY();//按y坐标降序
            }

        });

        Collections.sort(list,(o1,o2)->{
               int len1=o1.getX()*o1.getX()+o1.getY()* o1.getY();
                int len2=o2.getX()*o2.getX()+o2.getY()*o2.getY();
                return len1-len2;//升序
            });
        //jdk1.8时，List集合自身提供了sort方法进行排序，方法中需要传入比较器

        list.sort(new Comparator<Point>() {
            @Override
            public int compare(Point o1, Point o2) {
                return o1.getX()-o2.getX();
            }
        });
        System.out.println("排序后的集合："+list);

        list.sort((o1,o2)->o1.getX()-o2.getX());
    }


}
